์๋ฐ์คํฌ๋ฆฝํธ์ ํ์๋ถํฐ ์ต์ ๊ธฐ๋ฅ๊น์ง, ์ ์ธ๊ณ ์น ๊ฐ๋ฐ์ ์ํฅ์ ๋ฏธ์น ํฅ๋ฏธ๋ก์ด ์งํ ๊ณผ์ ์ ์ดํด๋ณด์ธ์. ์ด ์ข ํฉ ๊ฐ์ด๋๋ ์ฃผ์ ์ด์ ํ์ ์ธ์ด์ ๋ฏธ๋๋ฅผ ๋ค๋ฃน๋๋ค.
์น ํ๋ซํผ ์งํ ํ์๋ผ์ธ: ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด ๊ธฐ๋ฅ ์ญ์ฌ ์ฌ์ธต ๋ถ์
์ธํฐ๋ํฐ๋ธ ์น์ ๊ตฌ๋ํ๋ ์ธ์ด์ธ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ทธ ํ์ ์ด๋๋ก ๋๋ผ์ด ๋ณํ๋ฅผ ๊ฒช์ด์์ต๋๋ค. ์ด ์ข ํฉ์ ์ธ ํ์๋ผ์ธ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ค๋๋ ์ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ ์ธ์ด๋ก ๋ง๋ ์ฃผ์ ์ด์ ํ, ๊ธฐ๋ฅ ๋ฐ ๋ฐ์ ์ ํ๊ตฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ผํ ์์๋ถํฐ ํ์ฌ ์ํ๊น์ง ๊ทธ ์งํ ๊ณผ์ ์ ์ฌํํ๋ฉฐ, ๊ฐ๋ฐ์ ์๋๋ ฅ๊ณผ ์ ์ธ๊ณ ์น ๊ฐ๋ฐ์ ๋ฏธ์น ์ํฅ์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค. ์ด ์ฌ์ ์ ์ค๋๋ ์กด์ฌํ๋ ๋ง์ ๊ธฐ๋ฅ์ด ๊ณผ๊ฑฐ์ ๊ธฐ๋ฐ ์์ ๊ตฌ์ถ๋์๊ธฐ ๋๋ฌธ์ ํ๋ ์น ๊ฐ๋ฐ ๊ดํ์ ์ดํดํ๋ ๋ฐ ํนํ ์ค์ํฉ๋๋ค.
์ด๊ธฐ: ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ (1995-2000)
์๋ฐ์คํฌ๋ฆฝํธ์ ์ด์ผ๊ธฐ๋ 1995๋ ์ ์์๋ฉ๋๋ค. ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ๋ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํ ์คํฌ๋ฆฝํ ์ธ์ด์ ํ์์ฑ์ ์ธ์ํ๊ณ ๋ธ๋ ๋ ์์ดํฌ์๊ฒ ๊ทธ ์ ์์ ๋งก๊ฒผ์ต๋๋ค. ์์ดํฌ๋ ๋จ 10์ผ ๋ง์ ์์ ํ์ฌ ์ฒ์์๋ ๋ชจ์นด(Mocha), ๊ทธ ๋ค์์๋ ๋ผ์ด๋ธ์คํฌ๋ฆฝํธ(LiveScript)๋ก ๋ถ๋ฆฌ๋ค๊ฐ ์ต์ข ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ธ๋๋ฉ๋ ์ด๊ธฐ ๋ฒ์ ์ ๋ง๋ค์์ต๋๋ค.
์ด ์ด๊ธฐ ๋ฒ์ ์ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๊ณ ์น ํ์ด์ง์ ์ํธ์์ฉ์ ์ ๊ณตํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ํต์ฌ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ (์ซ์, ๋ฌธ์์ด, ๋ถ๋ฆฌ์ธ)
- ์ฐ์ฐ์ (+, -, *, / ๋ฑ)
- ๊ฐ๋จํ ์ ์ด ํ๋ฆ (if/else ๋ฌธ, ๋ฐ๋ณต๋ฌธ)
- ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM) ์กฐ์ ๊ธฐ๋ฅ
์คํ ๊ฐ๋ฅํ ํต์ฐฐ: ์ด ์ด๊ธฐ ๋งฅ๋ฝ์ ์ดํดํ๋ฉด ์ธ์ด์ ์ด๊ธฐ ํํ๋ฅผ ๋ง๋ ์ ์ฝ ์กฐ๊ฑด๊ณผ ์ค๊ณ ๊ฒฐ์ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๊ทธ๊ฒ์ด ์๋์ ๋ชฉ์ ์ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์ธ์ํ๋ ๊ฒ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฌ ๋ฅ๋ ฅ์ ์ดํดํ๋ ์ด์ ์ ๋๋ค.
๊ธ๋ก๋ฒ ๊ด์ : ์ด ์๊ธฐ์ ์ธํฐ๋ท์ ์์ง ์ด๊ธฐ ๋จ๊ณ์์ต๋๋ค. ์ ์ธ๊ณ์ ์ผ๋ก ์น ์ ๊ทผ์ฑ์ด ๊ณ ๋ฅด์ง ์์์ต๋๋ค. ์ด๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฃผ๋ ๋์ ๊ณ ๊ฐ์ ์ ์ง๊ตญ์ ์ง์ค๋ ๋น๊ต์ ์ ์ ์์ ์ธํฐ๋ท ์ฌ์ฉ์์์ต๋๋ค.
ECMAScript ํ์คํ
์๋ฐ์คํฌ๋ฆฝํธ์ ์ธ๊ธฐ๊ฐ ๋์์ง์ ๋ฐ๋ผ ํ์คํ๋ ์ธ์ด์ ํ์์ฑ์ด ๋ถ๋ช ํด์ก์ต๋๋ค. 1997๋ ๋ท์ค์ผ์ดํ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์คํ๋ฅผ ์ํด ECMA ์ธํฐ๋ด์ ๋์ ์ ์ถํ๊ณ , ์ด๋ ECMAScript(ES)์ ํ์์ผ๋ก ์ด์ด์ก์ต๋๋ค. ECMAScript 1(ES1)์ ์ต์ด์ ๊ณต์ ์ฌ์์ด์์ต๋๋ค. ์ด ํ์คํ๋ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ํ๋ซํผ ๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ๊ฒฐ์ ์ ์ด์์ต๋๋ค.
ํต์ฌ ์์ : ECMAScript ํ์คํ๋ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ด์งํ๊ณ ๋ฏธ๋ ๋ฐ์ ์ ํ ๋๋ฅผ ๋ง๋ จํ ์ค์ํ ์ ํ์ ์ด์์ต๋๋ค.
์ํ๊ธฐ์ DOM ์กฐ์์ ๋ถ์ (2000-2005)
2000๋ ๋ ์ด๋ฐ์ ๋ท์ค์ผ์ดํ์ ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ๊ฐ ์ฐ์๋ฅผ ๋คํฌ๋ ๋ธ๋ผ์ฐ์ ์ ์์ ์๊ธฐ์์ต๋๋ค. ์ด๋ก ์ธํด ๋ธ๋ผ์ฐ์ ๊ฐ์ ์ผ๊ด๋์ง ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌํ์ด ๋ฐ์ํ์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ ๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ํด ๋ณ๋์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๊ณ , ์ด๋ ๋ถ์ด๋๊ณ ์ข์ ์ค๋ฌ์ด ๊ฐ๋ฐ ๊ฒฝํ์ผ๋ก ์ด์ด์ก์ต๋๋ค. ์ด ๊ธฐ๊ฐ ๋์์ ์ด์ ์ DOM ์กฐ์์ ์์์ต๋๋ค. ๋น๋๊ธฐ ํธ์ถ๋ ๋ํ๋๊ธฐ ์์ํ์ต๋๋ค.
์ด ์๊ธฐ์๋ ๋ค์์ด ๊ฐ์กฐ๋์์ต๋๋ค:
- ์น ํ์ด์ง์ ์ฝํ ์ธ ๋ ์คํ์ผ์ ๋ณ๊ฒฝํ๋ ๋ฑ HTML ์์ ์กฐ์.
- ๋ง์ฐ์ค ํด๋ฆญ, ํค ์ ๋ ฅ, ์์ ์ ์ถ๊ณผ ๊ฐ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ.
- ์์: ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์ฝํ ์ธ ๋ฅผ ๋์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํด์ ธ ์ด๊ธฐ ์ธํฐ๋ํฐ๋ธ ๊ฒฝํ์ผ๋ก ์ด์ด์ก์ต๋๋ค.
์คํ ๊ฐ๋ฅํ ํต์ฐฐ: ์ด ์๋์ ์ด๋ ค์์ ๋ธ๋ผ์ฐ์ ๋ณ ํน์ด์ ์ ์ถ์ํํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์ค์์ฑ์ ๊ฐ์กฐํฉ๋๋ค.
Ajax ํ๋ช ๊ณผ ํ๋ ์น ๊ฐ๋ฐ์ ์ฌ๋ช (2005-2008)
2005๋ Ajax(Asynchronous JavaScript and XML)์ ๋์ ์ ๊ฒ์ ์ฒด์ธ์ ์์ต๋๋ค. Ajax๋ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ ํ์ ์์ด ์น ํ์ด์ง์ ์ฝํ ์ธ ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๊ฒ ํ์ฌ ๋ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๊ณ ์ธํฐ๋ํฐ๋ธํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ด์ด์ก์ต๋๋ค. ์ด๋ ์น ๊ฐ๋ฐ์ ์๋ก์ด ์๋๋ฅผ ์ด์์ต๋๋ค.
Ajax์ ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ์ํฅ:
- ์๋ฒ์์ ๋น๋๊ธฐ ํต์ : ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฐฉํดํ์ง ์๊ณ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ.
- ๋์ ์ฝํ ์ธ ์ ๋ฐ์ดํธ: ํ์ด์ง์ ํ์ํ ๋ถ๋ถ๋ง ๋ก๋.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ ๋น ๋ฅด๊ณ ์ ์ฐํ๊ฒ ๋๊ปด์ง.
- ์ ์ธ๊ณ์ ์ํฅ: ์ด ํ์ ์ ์ฌ๋ฌ ์ง์ญ์ ๊ฑธ์ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์์ผฐ์ต๋๋ค. ํน์ ์ง์ญ์ ๋๋ฆฐ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ์น ํ์ด์ง์ ์ผ๋ถ๋ง ๋ค์ ๋ก๋ํ๋ฉด ๋์๊ธฐ ๋๋ฌธ์ ๋ณ๋ชฉ ํ์์ด ์ค์ด๋ค์์ต๋๋ค.
์์: ๊ตฌ๊ธ ๋งต์ค๋ ๋ถ๋๋ฝ๊ณ ์ญ๋์ ์ธ ์ง๋ ๊ฒฝํ์ ์ ๊ณตํ๋ฉฐ Ajax์ ๋ฅ๋ ฅ์ ๋ณด์ฌ์ฃผ๋ ๋ํ์ ์ธ ์์์ต๋๋ค.
์คํ ๊ฐ๋ฅํ ํต์ฐฐ: Ajax๋ฅผ ์ดํดํ๋ ๊ฒ์ ๋ง์ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)๊ณผ ๋์ ์น์ฌ์ดํธ์ ๊ธฐ๋ฐ์ด ๋๋ฏ๋ก ํ๋ ์น ๊ฐ๋ฐ์ ํ์์ ์ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ถ์ (2006-2010)
๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌํ์ ๋ถ์ผ์น๋ก ์ธํด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํ์คํ๋ ๋ฐฉ์์ผ๋ก ์์ฑํ ์ ์๋๋ก ์ ๊ณตํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง๋ค์ด์ก์ต๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ผ๋ฐ์ ์ธ ์์ ์ ๋จ์ํํ๊ณ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ ๊ณตํ์ต๋๋ค.
- jQuery: jQuery๋ DOM ์กฐ์, ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐ Ajax ํธ์ถ์ ๋จ์ํํ์ฌ ์์ฒญ๋ ์ธ๊ธฐ๋ฅผ ์ป์์ต๋๋ค. ๊ฐ๊ฒฐํ๊ณ ๋ช ํํ ๊ตฌ๋ฌธ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์ ์ฝ๋๋ก ํฅ์๋ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ํ๋ณดํ ์ ์๊ฒ ํ์ต๋๋ค.
- Prototype ๋ฐ Scriptaculous: Prototype๊ณผ Scriptaculous ๊ฐ์ ๋ค๋ฅธ ์ด๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ ์ค์ํ ์ญํ ์ ํ์ต๋๋ค.
์คํ ๊ฐ๋ฅํ ํต์ฐฐ: ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ์น ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ํํ์ต๋๋ค. ์ด ์๊ธฐ๋ ์น ์ํ๊ณ ๋ด์ ๊ณผ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์์ด ์ปค๋ฎค๋ํฐ์ ํ์ ์ ํ์ ๋ณด์ฌ์ค๋๋ค.
๊ธ๋ก๋ฒ ๊ด์ : jQuery์ ๋จ์์ฑ๊ณผ ์ฌ์ฉ ํธ์์ฑ์ ์ฌ๋ฌ ๊ตญ๊ฐ์์ ์น ๊ฐ๋ฐ์ ๋์คํํ๋ ๋ฐ ๋์์ด ๋์์ผ๋ฉฐ, ๋ค์ํ ์์ค์ ์ ๋ฌธ ์ง์์ ๊ฐ์ง ๊ฐ๋ฐ์๋ค์ด ์ธํฐ๋ํฐ๋ธํ ์น ๊ฒฝํ์ ๊ตฌ์ถํ ์ ์๋๋ก ํ์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํนํ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๊ธฐ๋ฐ์ด ํฐ ์ง์ญ์์ ๊ฐ๋ ฅํ ์ ์ง๋ฅผ ๋ค์ก์ต๋๋ค.
ECMAScript 5 (ES5)์ ํต์ฌ ์ธ์ด ๊ธฐ๋ฅ์ ๋ฐ์ (2009-2015)
2009๋ ์ ์ถ์๋ ECMAScript 5๋ ํต์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด์ ์๋นํ ๊ฐ์ ์ ๊ฐ์ ธ์์ผ๋ฉฐ, ์ด์ ๋ฒ์ ์ ๋ง์ ํ๊ณ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์ด ๋ฆด๋ฆฌ์ค๋ ์๋ฐ์คํฌ๋ฆฝํธ ์งํ์ ์ค์ํ ์ง์ ์ ์๋ฏธํ์ต๋๋ค.
ES5์ ์ฃผ์ ๊ธฐ๋ฅ:
strict mode: ์ธ์ด์ ๋ ์๊ฒฉํ ํ์ฑ ๋ฐ ์ค๋ฅ ์ฒ๋ฆฌ ๋ชจ๋๋ฅผ ์ถ๊ฐํ์ต๋๋ค.- JSON ์ง์: ๋ฐ์ดํฐ ๊ตํ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ํ์์ธ JSON(JavaScript Object Notation)์ ๋ํ ๋ค์ดํฐ๋ธ ์ง์.
- ์๋ก์ด ๋ฐฐ์ด ๋ฉ์๋:
forEach(),map(),filter(),reduce()์ ๊ฐ์ ๋ฉ์๋๋ก ๋ฐฐ์ด ์กฐ์ ๊ธฐ๋ฅ ๊ฐํ. - ์์ฑ ์ ๊ทผ์: ๊ฐ์ฒด ์์ฑ์ ๋ ์ ์ ์ดํ ์ ์๋ ๊ฒํฐ(getter)์ ์ธํฐ(setter).
์คํ ๊ฐ๋ฅํ ํต์ฐฐ: ES5๋ ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ํ ๊ธฐ์ด์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ต๋๋ค.
์์: JSON ์ง์์ ๋์ ์ ๋ฐ์ดํฐ์ ํ์ฑ๊ณผ ์ง๋ ฌํ๋ฅผ ๋จ์ํํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด/์์คํ ๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ ํฌ๊ฒ ํฅ์์์ผฐ์ต๋๋ค.
ES6 ํ๋ช : ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ (2015-ํ์ฌ)
ECMAScript 2015๋ก๋ ์๋ ค์ง ECMAScript 6(ES6)๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ญ์ฌ์ ๋ถ์๋ น์ด ๋ ์๊ฐ์ด์์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ๋ณํ์ํจ ๋ฐฉ๋ํ ์์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋์ ํ์ต๋๋ค. ์ด์ ์ ๋ ํ๋์ ์ด๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ์ฝ๋๋ฒ ์ด์ค๋ก ์ด๋ํ์ต๋๋ค.
ES6์ ์ฃผ์ ๊ธฐ๋ฅ:
let๊ณผconst: ๋ธ๋ก ๋ฒ์์ ๋ณ์ ์ ์ธ์ผ๋ก, ์๊ธฐ์น ์์ ๋์์ ์ํ์ ์ค์ ๋๋ค.- ํ์ดํ ํจ์: ํจ์๋ฅผ ์ ์ํ๊ธฐ ์ํ ๊ฐ๊ฒฐํ ๊ตฌ๋ฌธ์ผ๋ก ๊ฐ๋ ์ฑ์ ํฅ์์ํต๋๋ค.
- ํด๋์ค: ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์์ ๋ค๋ฃจ๊ธฐ ์ํ ๋ ์ง๊ด์ ์ธ ๊ตฌ๋ฌธ์ผ๋ก, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ ์น์ํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
- ๋ชจ๋: ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๊ณ ์ฌ์ฌ์ฉํ๊ธฐ ์ํ ํ์คํ๋ ๋ชจ๋ ์์คํ .
- ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด: ๋ ์ฌ์ด ๋ฌธ์์ด ๋ณด๊ฐ ๋ฐ ์ฌ๋ฌ ์ค ๋ฌธ์์ด.
- ๊ตฌ์กฐ ๋ถํด ํ ๋น: ๋ฐฐ์ด ๋ฐ ๊ฐ์ฒด์์ ๊ฐ์ ๊ฐ๋จํ๊ฒ ํ ๋น.
- ํ๋ก๋ฏธ์ค(Promises): ๋น๋๊ธฐ ์์ ์ ๋ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌ.
์คํ ๊ฐ๋ฅํ ํต์ฐฐ: ES6๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ๋ ์ ๊ตํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ธฐ๋ฐ์ ๋ง๋ จํ์ต๋๋ค.
์ ์ธ๊ณ์ ์ํฅ: ES6๋ ์ ์ธ๊ณ์ ์ผ๋ก ์ฆ์ ์ฑํ๋์์ผ๋ฉฐ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ด ์น์ฌ์ดํธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐฉ์์ ๊ทผ๋ณธ์ ์ผ๋ก ๋ฐ๊พธ์์ต๋๋ค. ์ด ๋ณํ๋ก ๋ ๋ณต์กํ๊ณ ๊ธฐ๋ฅ์ด ํ๋ถํ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
๊ณ์๋๋ ์งํ: ECMAScript ์ ๋ฐ์ดํธ (ES2016 - ํ์ฌ)
ES6 ์ดํ, ECMAScript ์ฌ์์ ๋งค๋ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ์ฑํํ์ฌ ๋ ๋น๋ฒํ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ก์ต๋๋ค. ์ข ์ข ESNext๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ด๋ฌํ ๋ฆด๋ฆฌ์ค๋ ์ธ์ด์ ์ ์ง์ ์ธ ๊ฐ์ ๊ณผ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ต๋๋ค.
ES2016 ์ดํ์ ๋์ ๋ ์ฃผ์ ๊ธฐ๋ฅ:
- ES2016:
Array.prototype.includes()๋ฐ ๊ฑฐ๋ญ์ ๊ณฑ ์ฐ์ฐ์(**) - ES2017: ๋ ์ฌ์ด ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ํ
async/await,Object.entries()๋ฐObject.values() - ES2018: ๊ฐ์ฒด๋ฅผ ์ํ ๋๋จธ์ง/์ ๊ฐ ์์ฑ, ๋น๋๊ธฐ ๋ฐ๋ณต ๋ฑ.
- ES2019:
Array.prototype.flat()๋ฐArray.prototype.flatMap(), ์ ํ์ catch ๋ฐ์ธ๋ฉ. - ES2020: ๋ ๋ณํฉ ์ฐ์ฐ์(??), ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์(?.), ๊ทธ๋ฆฌ๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ผ๋ก์์ ๋ชจ๋.
- ES2021:
String.prototype.replaceAll(),Promise.any(), ๋ฐ ๋ ผ๋ฆฌ ํ ๋น ์ฐ์ฐ์(&&=, ||=, ??=). - ES2022: ํด๋์ค ํ๋, ๋น๊ณต๊ฐ ํด๋์ค ๋ฉค๋ฒ, ์ต์์ await.
- ES2023:
toSorted(),toReversed()์ ๊ฐ์ ๋ฐฐ์ด ์กฐ์ ๋ฉ์๋ ๋ฑ.
์คํ ๊ฐ๋ฅํ ํต์ฐฐ: ์ด๋ฌํ ์ ๊ธฐ์ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ ํ๋์ ์ด๊ณ ํจ์จ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์ต์ ๊ธฐ๋ฅ์ ํตํฉํ๊ธฐ ์ํด ์ฐ๊ฐ ์ ๋ฐ์ดํธ๋ฅผ ์ฃผ์ํ์ญ์์ค.
๊ธ๋ก๋ฒ ๊ด์ : ์๋ฐ์คํฌ๋ฆฝํธ์ ์ง์์ ์ธ ๊ฐ๋ฐ๊ณผ ๋์์๋ ์งํ๋ ์น์ ๊ธ๋ก๋ฒํ ํน์ฑ์ ๋ฐ์ํฉ๋๋ค. ์ ์ธ๊ณ ๊ฐ์ง์ ๊ฐ๋ฐ์๋ค์ด ๊ทธ ์ฑ์ฅ์ ๊ธฐ์ฌํ๊ณ ์์ผ๋ฉฐ ๊ทธ ๋ฐ์ ์ ์ํ์์ ๋๋ค.
ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์๋ฐ์คํฌ๋ฆฝํธ์ ์งํ๋ ์น ๊ฐ๋ฐ์ ๋จ์ํํ๊ณ ๊ฐ์ํํ๋ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ถ์์ผ๋ก ์ด์ด์ก์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๋ณต์กํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ตฌ์กฐ, ์กฐ์ง ๋ฐ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ค์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค๊ณ๋๊ณ ๊ตฌ์ถ๋๋ ๋ฐฉ์์ ์๋นํ ์ํฅ์ ๋ฏธ์ณค์ผ๋ฉฐ, ์น ๊ฐ๋ฐ ํ๋ก์ ํธ์ ์ฐธ์ฌํ๋ ๊ฐ์ธ์ ์ญํ ๊ณผ ์ฑ ์์ ๋ณํ์์ผฐ์ต๋๋ค.
- React: ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. React์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ์ ๊ฐ์ DOM์ ๋งค์ฐ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. ๊ทธ ์ธ๊ธฐ๋ ์ ์ธ๊ณ์ ์ผ๋ก ํญ๋ฐ์ ์ธ ์ฑ์ฅ์ ๋ณด์์ต๋๋ค.
- Angular: ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์ ๊ตฌ์ถํ๊ธฐ ์ํ ํฌ๊ด์ ์ธ ํ๋ ์์ํฌ์ ๋๋ค. Angular๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ, ์์กด์ฑ ์ฃผ์ , ๋ผ์ฐํ ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- Vue.js: ์ฌ์ฉ ํธ์์ฑ๊ณผ ์ ์ฐ์ฑ์ผ๋ก ์๋ ค์ง ์ ์ง์ ํ๋ ์์ํฌ์ ๋๋ค. Vue.js๋ ์๋งํ ํ์ต ๊ณก์ ์ผ๋ก ์ธํด ์ข ์ข ์ ํธ๋๋ฉฐ, ๊ฐ๋ฐ์๋ค์ด ๋น ๋ฅด๊ฒ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ํฉ๋๋ค.
- Node.js: ์๋ฒ ์ธก์์ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ํ์คํ ์น ๊ฐ๋ฐ์ ์๋ง์ ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค. Node.js๋ ์คํ ์์ค์ด๋ฉฐ ํฌ๋ก์ค ํ๋ซํผ์ด๋ฏ๋ก ์ ์ธ๊ณ์ ์ผ๋ก ์ธ๊ธฐ๊ฐ ์์ต๋๋ค.
์คํ ๊ฐ๋ฅํ ํต์ฐฐ: ํ๋ ์์ํฌ๋ ๊ตฌ์กฐ์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ์ฌ ํ ํ์ ์ ์ด์งํ๊ณ ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ํ๋ ์์ํฌ๋ฅผ ์ ํํ๋ ๊ฒ์ ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ๊ณผ ํ ์ ๋ฌธ์ฑ์ ๋ฌ๋ ค ์์ต๋๋ค.
์ ์ธ๊ณ์ ์ํฅ: ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์ธ๊ธฐ์ ์ฑํ์ ํน์ ๊ตญ๊ฐ๋ ์ง์ญ์ ๊ตญํ๋์ง ์์ต๋๋ค. ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ๋ฉฐ, ์น ๊ฐ๋ฐ์ ์ํ ๊ธ๋ก๋ฒ ์ธ์ด๋ก์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์น๋ฅผ ๋์ฑ ๊ณต๊ณ ํ ํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฏธ๋
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฏธ๋๋ ๋ฐ์ผ๋ฉฐ, ์ง์์ ์ธ ๊ฐ๋ฐ๊ณผ ํ์ ์ด ์น ํ๋ซํผ์ ๊ณ์ํด์ ํ์ฑํ๊ณ ์์ต๋๋ค. ๋ฏธ๋๋ฅผ ํ์ฑํ๋ ๋ช ๊ฐ์ง ์ฃผ์ ํธ๋ ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- WebAssembly (Wasm): WebAssembly๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ด์ธ์ ์ธ์ด(C/C++, Rust ๋ฑ)๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ธ๋ผ์ฐ์ ์์ ์คํํ ์ ์์ต๋๋ค. ์ด๋ ์ฑ๋ฅ ํฅ์๊ณผ ์๋ก์ด ๊ธฐ๋ฅ์ ์ ์ฌ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์๋ฒ๋ฆฌ์ค ์ปดํจํ : ์๋ฒ๋ฆฌ์ค ๊ธฐ์ ์ ๋ถ์์ผ๋ก ๊ฐ๋ฐ์๋ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ์ง ์๊ณ ๋ ๋ฐฑ์๋๋ฅผ ๊ตฌ์ถํ ์ ์๊ฒ ๋์ด ํ์คํ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์งํ์ ๊ธฐ์ฌํ๊ณ ์์ต๋๋ค.
- ์ง์์ ์ธ ECMAScript ์งํ: ECMAScript์ ์ฐ๊ฐ ๋ฆด๋ฆฌ์ค๋ ์๋ก์ด ๊ธฐ๋ฅ, ๊ตฌ๋ฌธ ๊ฐ์ ๋ฐ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ๊ฐ์ ธ์ฌ ๊ฒ์ ๋๋ค.
- ๊ฐ์ ๋ ๊ฐ๋ฐ์ ๋๊ตฌ: ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋น๋ ๋๊ตฌ๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ณ ์์ฐ์ฑ์ ๋์ด๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ง์ ํฅ์์ํค๊ธฐ ์ํด ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
์คํ ๊ฐ๋ฅํ ํต์ฐฐ: ์ด๋ฌํ ํธ๋ ๋์ ๊ธฐ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ง์์ ์ผ๋ก ํ์ ํ์ฌ ๊ธฐ์ ์ ์กฐ์ ํ๊ณ ์น ๊ฐ๋ฐ์ ์ต์ ์ ์ ์์ญ์์ค.
๊ธ๋ก๋ฒ ๊ด์ : ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฏธ๋๋ ์น ํ๋ซํผ์ ์งํ๋ฅผ ์ฃผ๋ํ๊ณ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ํฅ์๋ ์จ๋ผ์ธ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ธ๋ก๋ฒ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ์ํด ํ์ฑ๋ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก
์๋ฐ์คํฌ๋ฆฝํธ์ ์งํ๋ ์ธ์ด์ ์ ์์ฑ, ํ๋ณตํ๋ ฅ์ฑ, ๊ทธ๋ฆฌ๊ณ ๊ธ๋ก๋ฒ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ํ์ ์ ๋ํ ์ฆ๊ฑฐ์ ๋๋ค. ๊ฐ๋จํ ์น ํ์ด์ง ํฅ์์ ์ํ ์คํฌ๋ฆฝํ ์ธ์ด๋ผ๋ ์ด๊ธฐ ๋ชฉ์ ์์๋ถํฐ ๋ณต์กํ๊ณ ์ธํฐ๋ํฐ๋ธํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ํต์ฌ ๊ธฐ์ ๋ก์์ ํ์ฌ ์ญํ ์ ์ด๋ฅด๊ธฐ๊น์ง, ์๋ฐ์คํฌ๋ฆฝํธ๋ ์น์ ๋ณํ์์ผฐ์ต๋๋ค. ์ด๊ธฐ๋ถํฐ ์ต์ ๊ธฐ๋ฅ๊น์ง ์๋ฐ์คํฌ๋ฆฝํธ์ ์ญ์ฌ๋ฅผ ์ดํดํ๋ ๊ฒ์ ๋ชจ๋ ์น ๊ฐ๋ฐ์์๊ฒ ํ์์ ์ ๋๋ค. ์ธ์ด์ ์ง์์ ์ธ ์งํ๋ ๊ณ์ํด์ ํ์ ์ ์ฃผ๋ํ๊ณ ์น์ ๋ฏธ๋๋ฅผ ํ์ฑํ ๊ฒ์ ๋๋ค. ์ ๋ณด๋ฅผ ์ง์์ ์ผ๋ก ํ์ ํ๊ณ , ์๋ก์ด ๊ธฐ๋ฅ์ ์์ฉํ๋ฉฐ, ์ปค๋ฎค๋ํฐ์ ๊ธฐ์ฌํจ์ผ๋ก์จ ์ด ํฅ๋ฏธ์ง์งํ ์ฌ์ ์ ์ผ๋ถ๊ฐ ๋ ์ ์์ต๋๋ค.